//引入request
import request from "../../utils/request"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    groupList:[],
    navId : "" ,
    moveList:[],
    vId : '',
    currentIdArr:[],
    refresher:true
  },

  /**
   * 生命周期函数--监听页面加载
   */
   async onLoad(options) {
    //1.页面加载调用getGroupList
     await this.getGroupList();
    //2.页面加载调用getMoveList
     await this.getMoveList()
  },

  //1.获取groupList数据
  async getGroupList(){
    //发送请求
    const re = await request("/video/group/list",{},"GET");
    //获取数据赋值给groupList
    this.setData({
      groupList:re.data.slice(0,30)
    });
    //默认第一个有active类名
    this.setData({
      navId:re.data.slice(0,30)[0].id
    })
  },

  //2.点击切换active和id
  switchActive(e){
    //获取自定义属性的值
    this.setData({
      navId:e.currentTarget.dataset.id
    });
    //切换的时候重新调用
    this.getMoveList();
  },

  //3.获取视频数据
  async getMoveList(){
    const re = await request("/video/group",{id:this.data.navId},"GET");
    this.setData({
      moveList:re.datas.map(item => item.data)
    })
  },

  //4.控制视频只能有一个播放
  controlOneMove(e){
    //获取当前的视频id
    const vId = e.currentTarget.id;
    //判断当前的视频是否播放过
    if(!this.broadcast){
       //进到这说明是首次进入
       //先创建一个实例保存this上
       this.broadcast = wx.createVideoContext(vId);
       this.broadcast.play();
       // 跳转到 历史记录页面
       this.seekHistoryVideo(vId);
       //保存当前的id
       this.setData({
         vId
       })
    }else{
      //判断是不是当前的视频
      if(this.data.vId !== vId){
        this.broadcast.pause();
        this.broadcast = wx.createVideoContext(vId)
        this.broadcast.play();
        //保存当前的id
        this.setData({
          vId
        })
      }else{
        //什么都不做
      }
    }
  },

  //5.获取上一次记录的时间回调
  getVideoTime(e){
    //获取当前播放的时间
    const currentTime = e.detail.currentTime;
    //获取当的id
    const vId = e.target.id;
    //把id 和 当前的时间整理成对象
    const currentObj = {
      vId,
      currentTime
    };
    //通过id查找currentIdArr是否拥有
    const currentIdArr = this.data.currentIdArr;
    const newObj = currentIdArr.find(item => item.vId === vId);
    //判断有没有
    if(newObj){
      //有就直接修改
      newObj.currentTime = currentTime
    }else{
      //没有就添加
      currentIdArr.push(currentObj);
      this.setData({
        currentIdArr
      })
    };

  },
  
  //6.跳转历史记录
  seekHistoryVideo(vId){
    //获取历史记录
    const obj = this.data.currentIdArr.find(item => item.vId === vId);
    if(obj){
      console.log(1111);
      this.broadcast.seek(obj.currentTime)
    }
  },

  //7.播放完删除当前的数据
  handlerEnd(){
    //获取当的id
    const vId = e.target.id;

    const currentIdArr = this.data.currentIdArr;
    let newCurrentIdArr =  currentIdArr.filter(item => item.vId !== vId);
    this.setData({
      currentIdArr:newCurrentIdArr
    })
  },

  
    //8.下拉刷新的回调函数
    async onRefresherrefresh(){
      await this.getMoveList()
  
      // 3、请求成功后  refresher设置为flase
      setTimeout(()=>{
        this.setData({
          refresher:false
        })
      },2000)
    },
      // 9.上拉触底
  async onScrolltolower(){
    // 1、获取 videoList 的数据
    const moveList = this.data.moveList
    // 简单的控制一下
    if(moveList.length <30){
      // 2、次函数的 调回执行的时候  拿到最新的数据
      const r = await request('/video/group',{id:this.data.navId},'GET')
      // 3、更新视频列表
      this.setData({
        moveList: [...moveList, ...r.datas.map(item => item.data)] 
      })
    }
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})